#include <iostream>
using namespace std;

// 1. new基本语法
int *func()
{
  // 在堆区创建爱你整型数据
  // new返回是 该数据类型的指针
  int *p = new int(10);
  return p;
}

void test01()
{
  int *p1 = func();

  cout << *p1 << endl;
  cout << *p1 << endl;
  cout << p1 << endl;
  // 堆区的数据由程序员管理开辟、释放
  // 如果想释放堆区的数据，利用关键字delete
  delete p1;
  cout << *p1 << endl;
  cout << *p1 << endl;
  cout << p1 << endl;
}

// 2. 在堆区利用new开辟数组
void test02()
{
  // 创建10整型数据的数组，在堆区
  int *p = new int[10];
  for (int i = 0; i < 10; i++)
  {
    p[i] = i + 100;
  }

  for (int i = 0; i < 10; i++)
  {
    cout << p[i] << endl;
  }

  // 释放堆区数组
  // 释放数组的时候 要加[]
  delete[] p;
}

int main(int argc, char const *argv[])
{
  test01();
  test02();
  return 0;
}